[上級編]LLMへ至る道~TransformerのDecoderってことはデコードするものが必要~[18日目]
みなさんこんにちは!クルトンです。
前日はTransformerモデルのEncoderに関するブログでした。Attentionを使いつつ、さまざまなもので表現力を獲得していましたね。
本日のブログはDecoderです。いよいよTransformerについてご紹介するブログもこれで最後です。
Decoder何するものぞ
Decoderは次に来る言葉の予測をするためのものです。
下図では、英文の最後の単語を予測しています。(答えはsleepです。)
処理には次のものが使われています。
- 入力トークンを埋め込む
- 位置付加
- Masked Multi-head Attention
- 加算&層正規化
- Multi-head Attention
- 残差結合
基本的にはEncoderについてご紹介したブログと同じような構成をしています。
また、Masked Multi-head Attentionについてですが、Attentionをご紹介したブログにて説明しておりますのでご参照ください。
Multi-head Attentionにおいても同じもの……といきたいところですが、Encoderとは少し違う部分がございますので、そちらをメインに今回はお話をしていきます。
Multi-head Attentionでの違い
Multi-head Attentionは、Encoderとセットで使うかどうかで処理内容が異なります。まずはEncoderとセットで使う場合を考えてみます。
Encoder-Decoder構成のMulti-head Attention
まずはイメージ図を掲載します。イメージ図ではEncoderの中身については触れないので見えないようにしています。
Encoderという別のところで作られたものをkeyとvalueとして使うので、Cross-Attentionといいます。
例えば日本語から英語に機械翻訳をモデルにさせる場合ですが、Encoder-Decoderでの役割として、以下のようになります。
- Encoderでは翻訳対象の文を単語埋め込みする
- Encoderでは文脈を考慮した単語埋め込みをする
- 日本語の正解の文を使う
- Decoderでは途中まで翻訳された文と分散表現から単語を作る
- 日本語の正解の文と、英文から欠けている単語がどの英単語であるか予測する
上記内容を実現する時にkeyとvalueがEncoderから来たものを使用し、queryに関してはDecoder側で用意したものを使用しています。
機械翻訳の例の続きで言うと、英文の中で次に来る単語を予測した後に、「日本語に訳した時の正解の文章(keyとvalue)」と見比べて合っていそうかチェックしている、という事になります。
Decoderのみの構成
Encoderを使わない場合です。下の図のようなイメージになります。
見比べていただきたいので、Encoderの図を下に掲載します。
どこが違うか見分けがつくでしょうか?実は、両者の違いはAttentionの層を使う際にマスクをしているかどうかのみです。
Decoder構成では予測する仕組みを作ろうしているので、単語の位置関係で、注目している単語より後ろの単語が見えると答えが見えてしまうからですね。
終わりに
本日はTransformerモデルで使われているDecoderについてご紹介してきました。 ここまでのブログで、Transformerモデルの中で使われているEncoderとDecoderとAttentionについてご紹介しました。
これにてTransformerモデルのEncoderのみ、Decoderのみ、EncoderとDecoderがセットになったもの、それぞれのモデルについても理解できるかと思います。
明日は、ここまでのTransformerモデルの説明を踏まえて、Transformerモデルを使っているLLM(大規模言語)モデルについてまずは1つ目をご紹介したいと考えています。
本日はここまで。それでは、明日もよければご覧ください!
参考文献
Transformerの論文です。